var express = require('express');
var router = express.Router();
//引入封装好的上传图片的js文件
const {uploadFiles}=require('../utils/handleFiles.js');

router.post('/upload', function(req, res, next) {
    //做图片上传的相关配置
    const upload=uploadFiles({
    });
    upload(req,res,(err)=>{
        if(err){
            res.send({msg:'上传图片失败',success:false,err}) ;
        }else{
            let filenames=req.files.map(item=>{
                return item.filename;
            })
            // console.log(filenames)
            res.send({msg:'上传图片成功',success:true,filename:filenames});
        }
    })
});

module.exports=router;

function uploadFiles(options = {}) {
    // 1. 对参数 options 进行解构并设置默认值
    const { path = "./public/temp", key = "file", size = 1000 } = options;
    // 2. 设置 multer 的参数，配置 diskStorage，来控制文件存储的位置以及文件名字等
    const storage = multer.diskStorage({
        // 2.1 确定图片存储的位置
        destination: function (req, file, cb) {
            // 当 path 所对应目录不存在时，则自动创建该文件
            try {
                fs.accessSync(path);
            } catch (error) {
                fs.mkdirSync(path);
            }
            cb(null, path);
        },
        // 2.2 确定图片存储时的名字。（注意：如果使用原名，可能会造成再次上传同一张图片的时候的冲突）
        filename: function (req, file, cb) {
            var changedName = new Date().getTime() + '-' + file.originalname;
            cb(null, changedName);
        }
    });
    // 3. 配置图片限制
    const limits = {
        // 限制文件大小 1000 kb
        fileSize: 1024 * size,
        // 限制文件数量
        files: 5
    };
    // 4.生成的专门处理上传的一个工具，可以传入 storage、limits 等配置
    const upload = multer({ storage, limits });
    // 5. 返回多文件上传的设置信息（同样可用于单文件上传）
    return upload.array(key);
}
